In virtualized computer systems, it may be desirable in certain circumstances to suspend a virtual machine (VM) and resume it at a later time. This causes the VM execution to halt and the VM's state to be serialized and written to a file, commonly known as a checkpoint file or a suspend file.
Conventional approaches to suspending a VM can incur many costs in time, including the time needed to stop virtual CPUs of the VM, which increases with more virtual CPUs and virtual CPU load in the guest operating system; the time needed to flush in-flight I/O operations inside a guest operating system, which increases with more outstanding I/O operations and with higher latency of the disk attached to the guest operating system; the I/O latency of the disk where a persistent image of the guest RAM is getting stored; and disk space needed for the persistent storage of the guest RAM. As such, suspending a VM may take a long time to write out the VM's state to a file and might require a large amount of disk space.